var arr1 = [-1];
var arr2 = [-2, -3];
var arr3 = [-1, -2, [1, 2, [4, 99, [1, 11]]]];
// shift + alt + down

// method 1
// function getMax () {
//     var max = -Infinity;
//     for (var i = 0; i < arguments.length; i++) {
//         var arg = arguments[i];
//         for (var j = 0; j < arg.length; j++) {
//             var num = arg[j];
//             if (num > max) {
//                 max = num;
//             }
//         }
//     }
//     return max;
// }

// var result = getMax(arr1, arr2, arr3);

// method 2
// // 参数解构(es6)
// function getMax (...args) {
//     // const 常量  let可以声明变量（定量也可以）(es6)
//     let max = -Infinity;
//     // for of (es6)
//     for (const arg of args) {
//         for (const num of arg) {
//             if (num > max) {
//                 max = num;
//             }
//         }
//     }
//     return max;
// }

// // function getMax (arr1, arr2, arr3, arr4, ...) {

// // }

// const result = getMax(arr1, arr2, arr3);

// console.log(result);

// method 3
// function getMax (...args) {
//     // args: [ [1], [2, 3], [2, 3, 5] ]
//     // args: [ 1, 3, 5 ]
//     // args: 5
//     // 映射  [1, 2, 3] => [2, 3, 4]
//     // const arr = [1, 2, 3];
//     // // map 映射  mapping 映射
//     // const newArgs = arr.map(function (item) {
//     //     return item + 1;
//     // });
//     const newArgs = args.map(function (arg) {
//         return Math.max(...arg);
//     });
//     return Math.max(...newArgs);
// }

// method 4
function getMax (...args) {
    // flat 拍扁（降维）(es6+)
    return Math.max(...args.flat(Infinity));
}

// 练习
var arr1 = [-1];
var arr2 = [-2, -3];
var arr3 = [-1, -2];

// 求一位数组的和
function getNumArrSum (nums) {
    let sum = 0;
    for (const num of nums) {
        sum += num;
    }
    return sum;
}

// 写一个求和函数
function getSum (...args) {
    return getNumArrSum(args.flat(Infinity));
}
